/**
 * 
 */
package com.qolome.utils;

/**
 * @Description: 版本工具类
 * @author 姜锋
 * @date 2019年9月24日 下午4:25:37
 * @version V1.0
 */
public class VersionUtils {
	
	/**
	 * 判断是否为最新版本方法 将版本号根据.切分为int数组 比较
	 * @param localVersion 本地版本号
	 * @param onlineVersion 线上版本号
	 * @return 是否为新版本
	 * @throws IllegalArgumentException argument may not be null !
	 */
	public static boolean isNewVersion(String localVersion, String onlineVersion) {
		if (localVersion == null || onlineVersion == null) {
			throw new IllegalArgumentException("argument may not be null !");
		}
		if (localVersion.equals(onlineVersion)) {
			return false;
		}
		// 过滤非数字和非字符点
		String[] localArray = localVersion.replaceAll("[^0-9.]", "").split("[.]");
		String[] onlineArray = onlineVersion.replaceAll("[^0-9.]", "").split("[.]");
        // 取长度较短的版本
		int length = Math.min(localArray.length, onlineArray.length);
		// 以长度较短的版本为基点，逐个判断大小
		for (int i = 0; i < length; i++) {
			if (Integer.parseInt(onlineArray[i]) > Integer.parseInt(localArray[i])) {
				return true;
			} else if (Integer.parseInt(onlineArray[i]) < Integer.parseInt(localArray[i])) {
				return false;
			}
			// 相等 比较下一组值
		}
		// 长度较长的判断
		// 比较最后差异组数值 旧版本长度短于新版本
		if (localArray.length < onlineArray.length) {
			return Integer.parseInt(onlineArray[onlineArray.length - 1]) > 0;
          // 旧版本长度长于新版本
		} else if (localArray.length > onlineArray.length) {
            // 旧版本
			return Integer.parseInt(onlineArray[onlineArray.length - 1]) < 0;
		}
		return false;
	}
	
	public static void main(String[] args) {
		
		
		System.out.println(isNewVersion("bate2","le3"));
	}
}
